package com.demo.interceptor;

import com.demo.common.AppConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @Author quan
 * @Description 登录拦截器
 * @Date 2023/8/11 14:38
 */

@Component //加入到Spring中
public class LoginInterceptor implements HandlerInterceptor {
    @Value("${blog-form.login.url}")
    private String defaultUrl;

    /**
     * 预处理（请求的前置处理）回调方法
     * @return true继续流程； false终止流程
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获取session
        HttpSession session = request.getSession(false);
        //判断session是否为空和session中保存的用户信息是否有效
        if(session!=null && session.getAttribute(AppConfig.USER_SESSION_INFO)!=null){
            //说明校验通过
            return true;
        }
        //当校验不通过的时候，处理的逻辑：
        //1-返回错误状态码：HTTP状态码 或者
//        response.setStatus(403);//表示没有权限访问
        //2、对URL做校验:确定目标url从根目录开始:就是以/开始
        if(!defaultUrl.startsWith("/")){
            defaultUrl = "/"+defaultUrl;
        }
        //3-跳转到某一个页面
        response.sendRedirect(defaultUrl);
        //校验不通过
        return false;
    }
}


